Typically, data transfer limitations for a physical interface, such as USB, SDIO, PCI, TSIF and the like or a packet network interface, such as Ethernet often require that the video traffic on these channels is rate controlled, i.e., is regulated, such that it is rate controlled. Rate control refers to adhering to a pre-defined characteristic of data transfer over a channel based on average and peak data rate constraints. In cases where these channels are being used by more than one user, it is even more important to shape the video traffic in a manner that is conducive to the shared channel usage. The basic media pipeline for streaming or recording channels includes video capture, video pre-processing, video encoding and formatting (example: header addition, packetization, file format creation) based on destination. Further, user experience in video streaming and recording applications can be identified based on encoder and system performance in terms of parameters, such as perceived quality, required channel bandwidth, and achieved latency. However, in many systems, the expectations of performance on these three vectors may be mutually conflicting. For example, a marginal deviation in peak bandwidth of encoded data or increased system latency may result in degradation of the user experience due to effects like packet drops or late arrival of video frames at the destination.
In a simple rate control algorithm, the video encoder can allocate a fixed number of bytes for each frame (given by bandwidth*latency/frames per latency duration) to achieve the constraints of bandwidth and latency. However, allocating the same number of bytes for every frame may not be optimal in terms of quality.
In another existing implementation, large frames may be generated by the video encoder for achieving a higher quality. However, the time required to send this large encoded frame while adhering to a constrained bandwidth may be high and hence the latency requirement may be compromised. Alternatively, the system may burst the encoded frames onto network to achieve low latency. However, in this case, the channel bandwidth constraints may be violated.
In a trade-off across these three mutually conflicting performance requirements, it is often possible to fix two of the performance requirements and achieve the best possible performance for the third requirement. Marginal degradation in video encode bit rate is not often perceivable; however, not meeting the latency or channel bandwidth requirements may result in severe user inconvenience. Hence, in a case requiring all three performance requirements, latency and channel bandwidth requirements can be strictly met trying to achieve the best possible quality.
Typical video encode processing module takes parameters like average encode bit rate, VBV buffer size and key frame interval. These parameters have to be derived based on the three performance requirements.
Because of the latency incurred for transmission, there is a need for buffering in the system. Hence, system management parameters like buffering requirements and drain rate have to be identified based on the three performance requirements. However, these system management parameters are applicable for the entire video encode pipeline.
The systems and methods disclosed herein may be implemented in any means for achieving various aspects. Other features will be apparent from the accompanying drawings and from the detailed description that follow.